package com.shujia.wyh.day14;

/*
    按照要求，补齐代码
	interface Inter { void show(); }
	class Outer { //补齐代码 }
	class OuterDemo {
	    public static void main(String[] args) {
		      Outer.method().show();
		  }
	}
    要求在控制台输出”HelloWorld”
 */


interface Inter8 {
    void show();
}

class Outer8 {
     //从main方法调用的方式我们观察得出，由于是直接通过Outer8类名的方式调用方法，
     //所以我们判定该方法一定是被static
     //该方法的方法名叫method
     //再经过观察发现，调用的时候该方法没有进行传参，所以判定这个方法是没有参数的
     //再经过观察发现，调用完method()方法后，还继续调用了show方法，说明调用完该方法的返回值是一个对象
     //再观察题目发现，show方法是在Inter8接口中的，所以我们想到了当接口作为方法的返回值类型的说法
     //所以该方法的返回值类型是Inter8
     //分析得出该方法的定义
     public static Inter8 method(){
         //当接口作为返回值的时候实际上需要的是实现该接口具体类的对象
//         return new Demo8();
         //匿名内部类
         return new Inter8() {
             @Override
             public void show() {
                 System.out.println("HelloWorld");
             }
         };
     }
}

//class Demo8 implements Inter8{
//
//    @Override
//    public void show() {
//        //由于题目最终要求在控制台上输出HelloWorld
//        System.out.println("HelloWorld");
//    }
//}

public class InnerClassDemo9 {
    public static void main(String[] args) {
        Outer8.method().show();
    }
}
